package com.yuw.io.homework0803;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class MyTable {
	// 属性
	private List<Map<String, Object>> lstRow;
	// 行为

	public MyTable() {
		// 调用初始化行为
		initiate();
	}

	// 初始化行为
	/**
	 * 初始化
	 */
	private void initiate() {
		// 创建list实例对象
		lstRow = new ArrayList<>();
		// 从控制台录入数据
		Scanner sc = new Scanner(System.in);
		System.out.println("终止录入数据请输入【exit】，继续请输入【yes】：");
		String isContinue = sc.next();

		while (true) {
			// 判断是否结束录入
			if (isContinue.equalsIgnoreCase("exit")) {
				break;
			}

			// 进行录入数据
			// 创建一个Map用于存储新的行
			Map<String, Object> map0 = new LinkedHashMap<>();
			System.out.println("请输入学生姓名：");
			String strName = sc.next();
			// 将键值对存入map中
			map0.put("stuName", strName);

			System.out.println("请输入学生年龄：");
			int iAge = sc.nextInt();
			// 将键值对存入map中
			map0.put("stuAge", iAge);

			System.out.println("请输入学生成绩：");
			double fScore = sc.nextDouble();
			// 将键值对存入map中
			map0.put("stuScore", fScore);

			// map中存的是一行中的键值对，map需要存储到list中，list中有多少map就有多少行数据
			lstRow.add(map0);

			// 类似于改变循环因子语句
			System.out.println("终止录入数据请输入【exit】，继续请输入【yes】：");
			isContinue = sc.next();
		}

	}

	// 遍历打印行为

	/**
	 * 打印二维表格信息
	 */
	public void printInfo() {
		if (lstRow != null && lstRow.size() > 0) {
			// 标题打印标识变量
			boolean isPrintTile = true;
			// 使用迭代器遍历外层list
			// 获取迭代器对象
			Iterator<Map<String, Object>> it = lstRow.iterator();
			// 迭代器遍历
			while (it.hasNext()) {
				// 取出当前遍历的元素
				Map<String, Object> map = it.next();
				// 遍历内层map对象
				// 获取map的keyset集合
				Set<String> setKeys = map.keySet();
				// 打印标题行
				if (isPrintTile) {
					for (String strKey : setKeys) {
						System.out.print("\t" + strKey);
					}
					// 更改表示变量
					isPrintTile = false;
					// 换行
					System.out.println();
				}
				// 通过set遍历map
				for (String strKey : setKeys) {
					System.out.print("\t" + map.get(strKey));
				}
				// 换行
				System.out.println();
			}
		}
	}
}
